Robotic leader-follower navigation and fleet management control method

ABSTRACT

The robotic leader-follower navigation and fleet management control method implements SLAM in a group leader of a nonholonomic group of autonomous robots, while, at the same time, executing a potential field control strategy in follower members of the group.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to robotics, and particularly to a robotic leader-follower navigation and fleet management control method.

2. Description of the Related Art

A robot generates its trajectory based on Simultaneous Localization and Mapping (SLAM). The mapping problem is addressed by using the current observations and the last available knowledge about the navigation environment. From the literature, simultaneous localization and mapping is used when a robot is placed at an unknown location in an unknown environment and requested to incrementally build a map of this unknown environment and use it to navigate autonomously. However, a problem remains in the implementation of SLAM to control a fleet of robots.

Researchers addressed fleet control by implementing a potential fields formation control strategy, but they considered a point mass robot. What is needed, however, is to extend the fields formation control strategy to make one of the robots lead the others in an unknown environment, and at the same time have all the agents in the fleet keep their formation shape based on the potential fields. Moreover it would desirable to formulate a new framework extending previous work from point mass holonomic agents to nonholonomic vehicles.

Thus, a robotic leader-follower navigation and fleet management control method solving the aforementioned problems is desired.

SUMMARY OF THE INVENTION

The robotic leader-follower navigation and fleet management control method implements SLAM in a group leader of a nonholonomic group of autonomous robots, while, at the same time, executing a potential field control strategy in follower members of the group.

These and other features of the present invention will become readily apparent upon further review of the following specification and drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a system with known robotic dynamics.

FIG. 2 is a block diagram of a system with unknown robotic dynamics.

FIG. 3 is a schematic diagram of a robot in a 2-D coordinate system.

FIG. 4 is a contour map showing a robot and landmark relative positions with respect to a global reference frame.

FIG. 5 is a schematic diagram of a robot and a sensor bearing with respect to a robot coordinate frame.

FIG. 6 is a schematic diagram showing robot model parameters.

FIG. 7 is a plot showing full SLAM implementation in MATLAB.

FIG. 8 is a schematic diagram showing a multilayer feed forward neural network used in a system where robot dynamics are unknown.

FIG. 9 is a plot of leader sensing range.

FIG. 10 is a plot showing a fleet map of three agents along navigation with leader under FBL control.

FIG. 11 is a fleet map of three agents along navigation with the leader under NN control.

Similar reference characters denote corresponding features consistently throughout the attached drawings.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

At the outset, it should be understood by one of ordinary skill in the art that embodiments of the present method can comprise software or firmware code executing on a computer, a microcontroller, a microprocessor, or a DSP processor; state machines implemented in application specific or programmable logic; or numerous other forms without departing from the spirit and scope of the method described herein. The present method can be provided as a computer program, which includes a non-transitory machine-readable medium having stored thereon instructions that can be used to program a computer (or other electronic devices) to perform a process according to the method. The machine-readable medium can include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other type of media or machine-readable medium suitable for storing electronic instructions.

The robotic leader-follower navigation and fleet management control method includes lead and follower robots utilizing car-like, nonholonomic (a holonomic robot is one where the number of degrees of freedom is equal to the number of actuators, e.g., independently steerable wheels) steering to perform Simultaneous Localization and Mapping (SLAM) while on exploratory missions. Generally, the mobile robot with a 2-dimensonal coordination space system and subjected to m constraints can be described in general coordinates (q) by:

M(q){umlaut over (q)}+V _(m)(q,{dot over (q)}){dot over (q)}+F({dot over (q)})+G(q)+τ_(d) =B(q)τ−A ^(T)(q)λ,  (1)

where M(q)ε

^(n×n) is the Symmetric Positive Definite (PD) inertia matrix, V_(m)(q,{dot over (q)})ε

^(n×n) is the Centripetal and coriolis matrix, F({dot over (q)})ε

^(n×1) is the Surface friction, G(q)ε

^(n×1) is the Gravitational vector, τ_(d)ε

^(n×1) is the Unknown disturbance, B(q)ε

^(n×r) is the Input transformation matrix, τε

^(n×1) is the Input vector, A^(T)(q)ε

^(m×n) is matrix associated with constraints, and λε

^(m×1) is the constraint forces vector. If we consider all kinematic equality constraints are not time-dependent, then:

A(q){dot over (q)}=0.  (2)

Let S(q) be a full rank matrix of a set of smooth and linearly independent vector fields in null space of A(q), then:

S ^(T)(q)A ^(T)(q)=0.  (3)

If we consider equations (2) and (3), it will be possible to find a vector time function v(t)ε

^(n−m) such that:

{dot over (q)}=S(q)v(t).  (4)

The position of the robot shown in FIG. 3 is in an inertial Cartesian frame {O, X, Y}, and it is presented by the vector q=[x,y,θ]^(T). The kinematic equations of the motion for equation (4) can be presented in terms of linear and angular velocities by:

$\begin{matrix} {{S(q)} = \begin{bmatrix} {\cos \; (\theta)} & {{- d}\mspace{11mu} \sin \; (\theta)} \\ {\sin \; (\theta)} & {d\mspace{11mu} \cos \; (\theta)} \\ 0 & 1 \end{bmatrix}} & (5) \\ {v = {\begin{bmatrix} v \\ \omega \end{bmatrix} = \begin{bmatrix} v_{1} \\ v_{2} \end{bmatrix}}} & (6) \\ {\overset{.}{q} = {\begin{bmatrix} \overset{.}{x} \\ \overset{.}{y} \\ \overset{.}{\theta} \end{bmatrix} = {{\begin{bmatrix} {\cos \; (\theta)} & {{- d}\mspace{11mu} \sin \; (\theta)} \\ {\sin \; (\theta)} & {d\mspace{11mu} \cos \; (\theta)} \\ 0 & 1 \end{bmatrix}\begin{bmatrix} v_{1} \\ v_{2} \end{bmatrix}}.}}} & (7) \end{matrix}$

The matrices that define the model dynamics based on FIG. 3 are expressed in equation (1), where:

$\begin{matrix} {{M(q)} = \begin{bmatrix} m & 0 & {{md}\mspace{11mu} \sin \; (\theta)} \\ 0 & m & {{- {md}}\mspace{11mu} \cos \; (\theta)} \\ {{md}\mspace{11mu} \sin \; (\theta)} & {{- {md}}\mspace{11mu} \cos \; (\theta)} & I \end{bmatrix}} & (8) \\ {{V\left( {q,\overset{.}{q}} \right)} = \begin{bmatrix} {{- {md}}\mspace{11mu} {\overset{.}{\theta}}^{2}\cos \; (\theta)} \\ {{- {md}}\mspace{11mu} {\overset{.}{\theta}}^{2}{\sin (\theta)}} \\ 0 \end{bmatrix}} & (9) \\ {{G(q)} = 0} & (10) \\ {{B(q)} = {\frac{1}{r}\begin{bmatrix} {\cos \; (\theta)} & {\cos \; (\theta)} \\ {\sin \; (\theta)} & {\sin \; (\theta)} \\ R & {- R} \end{bmatrix}}} & (11) \\ {\tau = \begin{bmatrix} \tau_{1} \\ \tau_{2} \end{bmatrix}} & (12) \end{matrix}$

Now the system of equation (1) will be transformed to be appropriate for control consideration. To arrive at that, we need to differentiate equation (4) and substitute it into equation (1). We then multiply the resulting equation by S^(T). The final motion equations of the nonholonomic mobile robot will be given as:

{dot over (q)}=Sv  (13)

S ^(T) MS{dot over (v)}+S ^(T)(M{dot over (S)}+V _(m) S)v+ F+ τ _(d) =S ^(T) Bτ,  (14)

where v(t)ε

^(n−m) is a vector of the velocity. Equation (14) will be rewritten as:

M (q){dot over (v)}+ V _(m)(q,{dot over (q)})v+ F (v)+ τ _(d) = Bτ  (15)

τ= Bτ,  (16)

where M(q)ε

^(r×r) is a symmetric PD inertia matrix, V _(m)(q,{dot over (q)})ε

^(r×r) is the centripetal and coriolis matrix, F(v)ε

^(r×1) is the surface friction, τ _(d) is an unknown disturbance, and τε

^(r×1) is an input vector.

Equation (15) describes the system behavior in the vehicle coordinates. This means S(q) is the transformation matrix, which transforms the velocities of the vehicle coordinates ‘v’ to Cartesian coordinates velocities {dot over (q)}.

TABLE 1 Vehicle parameters Parameter Value Unit m 10 Kg I 5 Kg-m² R 0.5 m r 0.05 m

The Simultaneous Localization and Mapping is a coupled problem of localization and mapping. This has a solution only if the two problems are processed together. With respect to the process model, the SLAM problem can be formulated by assuming a vehicle (mobile robot) that has a known kinematic model moving through an environment that is populated with a number of (features) landmarks. The vehicle has a sensor to measure the relative location between the vehicle and any one of the individual landmarks, as shown in FIG. 4. The state vector of the system contains the states of the vehicle model and all landmark positions (states). If we assume a linear discrete time model of the vehicle and its state is given as x_(v)(k), then the vehicle process model is given as:

x _(v)(k+1)=F _(v)(k)+u _(v)(k+1)+w _(v)(k+1),  (17)

where F_(v)(k) is the state transition matrix, u_(v)(k) is control inputs vector, and w_(v)(k) is a vector of uncorrelated process noise errors with zero mean and covariance Q_(v)(k). Based on the assumption that the landmarks are static, its state transition equation will be:

P _(i)(k+1)=P _(i)(k)=P _(i)  (18)

If we have N landmarks, the state vector of all the landmarks is given as:

P=[P ₁ ^(T) . . . P _(N) ^(T)]^(T),  (19)

and the overall state vector for both the vehicle and landmarks is:

x(k)=[x _(v) ^(T)(k)P ₁ ^(T) . . . P _(N) ^(T)]^(T).  (20)

The complete state transition model can be written as

$\begin{matrix} {\begin{bmatrix} {x_{v}\left( {k + 1} \right)} \\ P_{1} \\ \vdots \\ P_{N} \end{bmatrix} = {\begin{bmatrix} {F_{v}(k)} & 0 & \ldots & 0 \\ 0 & I_{P_{1}} & \ldots & 0 \\ \vdots & \vdots & \ddots & 0 \\ 0 & 0 & 0 & I_{P_{N}} \end{bmatrix}{\quad{\begin{bmatrix} {x_{v}(k)} \\ P_{1} \\ \vdots \\ P_{N} \end{bmatrix} + {\quad{{\begin{bmatrix} {u_{v}\left( {k + 1} \right)} \\ 0_{P_{1}} \\ \vdots \\ 0_{P_{N}} \end{bmatrix} + \begin{bmatrix} {w_{v}\left( {k + 1} \right)} \\ 0_{P_{1}} \\ \vdots \\ 0_{P_{N}} \end{bmatrix}},}}}}}} & (21) \end{matrix}$

where I_(P) _(i) is the dim(P_(i))×dim(P_(i)) identity matrix and 0_(P) _(i) is the dim(P_(i)) null vector.

With respect to an observation model, the vehicle has a sensor to measure the relative location between the vehicle and any one of the individual landmarks. Moreover, based on the assumption that the observations are linear, the observation model of any i^(th) landmark will be written as:

z _(i)(k)=H _(i) x(k)+v _(i)(k),  (22)

z _(i)(k)=H _(pi) p−H _(v) x _(v)(k)+v _(i)(k),  (23)

where v_(i)(k) is a vector of uncorrelated observation errors with zero mean and variance R_(i)(k). H_(i) is the observation matrix that relates the sensor output z_(i)(k) to the state vector x(k) when observing the i^(th) landmark and is written in the form:

H _(i) =[−H _(v),0 . . . 0,H _(pi),0 . . . 0],  (24)

which says that we have relative observations between the landmark and the vehicle itself.

In the estimation process we need to estimate the state x(k) based on our observations z. This will be easily achieved using the Kalman filter which will handle the function of estimation of landmarks and vehicle locations. The Kalman filter recursively calculates the estimation of the state x(k) in accordance with the process and observations. The Kalman Filter proceeds through a prediction stage, an observation stage, and an update stage.

With respect to the prediction stage, At time k if the initial values of the estimate {circumflex over (x)}(k|k) of the state x(k) and the covariance estimate of P(k|k) is initialized, the prediction can be calculated at time k+1 for state estimate as follows:

{circumflex over (x)}(k+1|k)=F(k){circumflex over (x)}(k|k)+u(k),  (25)

and the observation (relative to the i^(th) landmark) as:

{circumflex over (z)} _(i)(k+1|k)=H _(i)(k){circumflex over (x)}(k+1|k),  (26)

and also the state covariance:

P(k+1|k)=F(k)P(k|k)F ^(T)(k)+Q(k).  (27)

With respect to observation stage, after the prediction, the i^(th) landmark observation is calculated based on the observation model (22). The innovation (the discrepancy between the actual measurement z_(k) and the predicted measurement {circumflex over (z)}_(k)) is given as:

v _(i)(k+1)=z _(i)(k+1)−{circumflex over (z)} _(i)(k+|k),  (28)

and its covariance matrix is:

S _(i)(k+1)=H _(i)(k)P(k+1|k)H _(i) ^(T)(k)+R _(i)(k+1).  (29)

The update of state estimate and its corresponding covariance are calculated as follows:

{circumflex over (x)}(k+1|k+1)={circumflex over (x)}(k+1|k)+W _(i)(k+1)w _(i)(k+1),  (30)

P(k+1|k+1)=P(k+1|k)−W _(i)(k+1)S(k+1)W _(i) ^(T)(k+1),  (31)

where W_(i)(k+1) is the gain matrix, which is given by:

W _(i)(k+1)w _(i) =P(k+1|k)H _(i) ^(T)(k)S ⁻¹ _(i)(k+1).  (32)

The state of our process, x(k) needs to be estimated based on our measurement of z(k). This is the exact definition of the Kalman filter. Kalman filter recursively computes the estimates of state x(k), which is evolving according to the process and observation models. The filter proceeds in three stages prediction, observation and update as discussed above. Define a state x(k) at time k that evolves from state (k−1), and its measurement z(k) is given by:

x(k)=Ax(k+1)+Bu(k−1)+w(k), (process model), and  (33)

z(k)=Hx(k)+v(k), (observation model),  (34)

where A is the state transition model, B is the control input matrix, H is the observation matrix, which relates the measurement z(k) to the state vector x(k), w is the process noise, which is assumed to have a normal probability distribution with zero mean and covariance Q:

p(w)˜N(0,Q),  (35)

and, v is the observation noise, which is assumed to have a normal probability distribution with zero mean and covariance R:

p(v)˜N(0,R).  (36)

Table 2 presents the Kalman filter algorithm. If there is a nonlinearity in the system, the linear Kalman filter cannot deal with it. In situations like this, the extended Kalman filter can be used for estimation because it uses the linearized process model and the observation equations to predict the states.

TABLE 2 Kalman filter algorithm Kalman Filter Algorithm Prediction Predicted state {circumflex over (x)}(k|k − 1) = A(k){circumflex over (x)}(k − 1|k − 1) + B(k)u(k − 1) Predicted covariance P(k|k − 1) = A(k)P(k − 1|k − 1)A(k)^(T) + Q(k) Observation Innovation {tilde over (y)}(k) = z(k) − H(k){circumflex over (x)}(k|k − 1) Innovation covariance S(k) = H(k)P(k|k − 1)H(k)^(T) + R(k) Update Kalman gain K(k) = P(k|k − 1)H(k)^(T)S(k)⁻¹ Updated state {circumflex over (x)}(k | k) = {circumflex over (x)}(k | k − 1) + K(k){tilde over (y)}(k) Updated covariance P(k|k) = (I − K(k)H(k))P(k|k − 1)

Regarding the extended Kalman filter, if the nonlinearity is associated in the system, the Extended Kalman Filter (EKF) is used for estimation. In this case, the process is given as:

x(k)=ƒ(x(k−1),u(k−1),w(k−1)),  (37)

and the observation model will be:

z(k)=h(x(k),v(k)),  (38)

where ƒ, h are non-linear functions. The process and observation vectors can be approximated without noise values w(k) and v(k) because in practice, the noise cannot be measured at each time step. The approximated process model:

{tilde over (x)}(k)=ƒ({circumflex over (x)}(k−1),u(k),0),  (39)

and approximated observation model:

{tilde over (z)}(k)=h({tilde over (x)}(k),0),  (40)

and {circumflex over (x)}(k): is some a posteriori estimate of the process state. For nonlinear process estimation, the system is needed to be linearized at the current state:

x(k)={tilde over (x)}(k)+A(x(k−1)−{circumflex over (x)}(k+1)+Ww(k−1)),  (41)

z(k)={circumflex over (z)}(k)+J _(h)(x(k)−{circumflex over (x)}(k))+Vv(k),  (42)

where x(k) is the actual state vector, z(k) is the measurement vector, {tilde over (x)}(k) is the approximate state vector, {tilde over (z)}(k) is the approximate measurement vector, {circumflex over (x)}(k) is posteriori estimate of the state at step k, w(k) is process noise, v(k) is measurement noise, A is Jacobian matrix of partial derivatives of ƒ with respect to x, W is Jacobian matrix of partial derivatives of ƒ with respect to w, J_(h) is Jacobian matrix of partial derivatives of h with respect to x, and V is Jacobian matrix of partial derivatives of h with respect to v. The extended Kalman filter algorithm is presented in Table 3.

TABLE 3 Extended Kalman filter algorithm Extended Kalman Filter Algorithm Prediction Predicted state {circumflex over (x)}(k)⁻ = f({circumflex over (x)}(k − 1), u(k − 1), 0) Predicted covariance P(k)⁻ = A(k)P(k − 1)A(k)^(T) + W(k)Q(k − 1)W(k)^(T) Observation Innovation {tilde over (y)}(k) = z(k) − H(k) Innovation S(k) = J_(h)(k)P(k)⁻J_(h)(k)^(T) + covariance V(k)R(k)V(k)^(T) Update Kalman gain K(k) = P(k)⁻J_(h)(k)^(T)S(k)⁻¹ Updated state {circumflex over (x)}(k) = {circumflex over (x)}(k)⁻ + K(k){tilde over (y)}(k) Updated covariance P(k) = (I − K(k)J_(h)(k))P(k)⁻

Regarding SLAM-based laser pose tracking for simple robot model, the problem of localization using laser scanning is addressed by updating the vehicle position information at high frequency. Using laser scanning information to detect landmarks is known by artisans having ordinary skill. A simple robot model is used for the modeling purpose. The robot position is defined in global coordinates and the direction control is represented in the robot coordinates. The robot is equipped with a laser sensor for range and bearing calculations between the autonomous robot and the landmarks. The landmarks are defined as B_(i), i=1 . . . n, and the distance and bearing measurements are calculated based on the robot coordinates (x₁,y₁) where:

z(k)=(r,β),  (43)

in which r is the distance between LM and the laser and, β is the sensor bearing with reference to the robot coordinate frame. The vehicle and coordinate system 500 are shown in FIG. 5.

If the vehicle is controlled by its velocity V and the steering angle α with respect to the trajectory prediction of the vehicle back axle center, the process model will be:

$\begin{matrix} {\begin{bmatrix} \overset{.}{x} \\ \overset{.}{y} \\ \overset{.}{\varphi} \end{bmatrix} = \begin{bmatrix} {V\mspace{11mu} \cos \; (\varphi)} \\ {V\mspace{11mu} \sin \; (\varphi)} \\ {\frac{V}{L}\tan \; (\alpha)} \end{bmatrix}} & (44) \end{matrix}$

For updating, the center of the back axle should be translated to represent the kinematic vehicle based on the trajectory of the laser center, as shown in the schematic drawings 500 and 600 of FIG. 5 and FIG. 6, respectively. The full state representation is written as follows:

$\begin{matrix} {\begin{bmatrix} \overset{.}{x} \\ \overset{.}{y} \\ \overset{.}{\varphi} \end{bmatrix} = {\begin{bmatrix} {{V\mspace{11mu} \cos \; (\varphi)} - {\frac{V}{L}{\left( {{{a \cdot \sin}\; (\varphi)} + {{b \cdot \cos}\; (\varphi)}} \right) \cdot \tan}\; (\alpha)}} \\ {{V\mspace{11mu} \sin \; (\varphi)} + {\frac{V}{L}{\left( {{{a \cdot \cos}\; (\varphi)} - {{b \cdot \sin}\; (\varphi)}} \right) \cdot \tan}\; (\alpha)}} \\ {\frac{V}{L}\tan \; (\alpha)} \end{bmatrix}.}} & (45) \end{matrix}$

The final discrete model in global coordinates is represented in the form:

$\begin{matrix} {\begin{bmatrix} {x(k)} \\ {y(k)} \\ {\varphi (k)} \end{bmatrix} = {\quad{\begin{bmatrix} {{x(c)} + {{T \cdot {V(c)}}\mspace{11mu} \cos \; \left( {\varphi (c)} \right)} - {\frac{V(c)}{L}\begin{pmatrix} {{{a \cdot \sin}\; \left( {\varphi (c)} \right)} +} \\ {{\left. {{b \cdot \cos}\; \left( {\varphi (c)} \right)} \right) \cdot \tan}\; \left( {\alpha (c)} \right.} \end{pmatrix}}} \\ {{y(c)} + {{T \cdot {V(c)}}\mspace{11mu} \sin \; \left( {\varphi (c)} \right)} + {\frac{V(c)}{L}\begin{pmatrix} {{{a \cdot \cos}\; \left( {\varphi (c)} \right)} +} \\ {{\left. {{b \cdot \sin}\; \left( {\varphi (c)} \right)} \right) \cdot \tan}\; \left( {\alpha (c)} \right.} \end{pmatrix}}} \\ {\frac{V(c)}{L}\tan \; \left( {\alpha (c)} \right)} \end{bmatrix},}}} & (46) \end{matrix}$

where c=k−1 and T is the sampling time. The observation model is given by:

$\begin{matrix} {{\begin{bmatrix} z_{r}^{i} \\ z_{\beta}^{i} \end{bmatrix} = \begin{bmatrix} \sqrt{\left( {x_{L} - x_{i}} \right)^{2} + \left( {y_{L} - y_{i}} \right)^{2}} \\ {{a\; \tan \; \left( \frac{\left( {y_{L} - y_{i}} \right)}{\left( {x_{L} - x_{i}} \right)} \right)} - \varphi + \frac{\pi}{2}} \end{bmatrix}},} & (47) \end{matrix}$

where (x_(i), y_(i)) is the i^(th) landmark position. The estimated position of the landmark becomes part of the process state vector. If the robot begins its navigation from an unknown place and obtains the environment measurements, this procedure will be used to incrementally build a map and localize the vehicle based on this map. Plot 700 of FIG. 7 shows the full SLAM implementation in MATLAB. An exemplary SLAM implementation is described in U.S. Pat. No. 8,274,406 issued on Sep. 25, 2012 to Karlsson, et al., which is hereby incorporated by reference in its entirety.

Potential fields are a useful strategy for formation control of a fleet of robots. One possible application of a group of robots is in the exploration of unknown environments. A group of mobile robots which moves inside an unknown environment can acquire much more information than single robot exploration.

The potential fields approach can be used as a formation control strategy, that can be applied to a group of robots moving in a two dimensional space. The main idea is to make a group of robots move in a formation of a desired shape. The formation control strategy considers a group of ‘n’ point mass holonomic agents described by the following dynamics:

{umlaut over (x)} _(i) =u _(i) i=1, . . . ,n,  (48)

where x_(i)ε

², is the i^(th) agent's position. If the agents are needed to localize themselves on the circumcircle of a regular polygon, the distance between each two neighboring agents is equal to L, and the radius of the circumcircle of the polygon is

. The desired formation can be obtained by implementing the following control law:

$\begin{matrix} {u_{i} = {f_{ci} + {\sum\limits_{{j = 1},{j \neq i}}^{n}\; f_{aij}} - {b{\overset{.}{x}}_{i}}}} & (49) \\ {{f_{ci} = {- {\nabla_{x_{i}}{V_{ci}\left( x_{i} \right)}}}},} & (50) \end{matrix}$

where ƒ_(ci) is the force between the center (leader) and follower i. This term is to keep each agent at distance

from the center of the formation. Also,

ƒ_(aij)=∇_(x) _(i) V _(aij)(x _(i) ,x _(j))  (51)

This term is used to regulate the distances between the agents. Thus, the summation of attractive and repulsive potentials can control the formation behavior. When all agents are at a distance

from the group center, the control action at equation (50) is null. When the distances between each two neighboring agents is equal to L, the control action in equation (51) is null also.

In the desired group formation, the composition of these potential fields is null control action. In other words, the regular polygon formation means that the system is asymptotic stable. To get the desired formation, we consider our stable configuration shape is a regular polygon. Choose all the system energy as a Lyapunov candidate function ‘{tilde over (V)}’ such that:

$\begin{matrix} {{\overset{\sim}{V} = {\sum\limits_{i = 1}^{n}\; \left\lbrack {{E_{ci}\left( P_{i} \right)} + {\sum\limits_{{j = 1};{j \neq i}}^{n}\; {E_{aij}\left( {P_{i},P_{j}} \right)}} + {\frac{1}{2}v_{i}^{T}\overset{\_}{M}v_{i}}} \right\rbrack}},} & (52) \end{matrix}$

where E_(ci) is the energy of the center potential and E_(aij) is the energy of interagent potential. Then:

$\begin{matrix} {\overset{\sim}{V} = {\sum\limits_{i = 1}^{n}\left\lbrack {{Pot}_{i} + {Kin}_{i}} \right\rbrack}} & (53) \\ {{Pot}_{i} = {{E_{ci}\left( P_{i} \right)} + {\sum\limits_{{j = 1};{j \neq i}}^{n}\; {E_{aij}\left( {P_{i},P_{j}} \right)}}}} & (54) \\ {{Kin}_{i} = {\sum\limits_{i = 1}^{n}{\frac{1}{2}v_{i}^{T}\overset{\_}{M}v_{i}}}} & (55) \end{matrix}$

where

${P_{i} = \begin{bmatrix} x_{i} \\ y_{i} \\ \theta_{i} \end{bmatrix}};{P_{j} = {\begin{bmatrix} x_{j} \\ y_{j} \\ \theta_{j} \end{bmatrix}.}}$

For the desired shape formation, the system will be stable if and only if the {tilde over (V)}(P_(i))≧0. The time derivative of a Lyapunov candidate function is ‘{tilde over ({dot over (V)}’:

$\begin{matrix} {\mspace{79mu} {{\overset{.}{\overset{\sim}{V}}\left( P_{i} \right)} = {\sum\limits_{i = 1}^{n}\left\{ {{\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack {\overset{.}{P}}_{i}} + {\left\lbrack {Kin}_{i} \right\rbrack \overset{.}{v}}} \right\}}}} & (56) \\ {\overset{.}{\overset{\sim}{V}} = {{\sum\limits_{i = 1}^{n}{\left\lbrack {{\nabla_{P_{i}}{E_{ci}\left( P_{i} \right)}} + {\sum\limits_{{j = 1};{j \neq i}}^{n}{\nabla_{P_{i}}{E_{aij}\left( {P_{i},P_{j}} \right)}}}} \right\rbrack {\overset{.}{P}}_{i}}} + {\sum\limits_{= 1}^{n}{{\frac{\partial}{\partial V_{i}}\left\lbrack {\frac{1}{2}v_{i}^{T}\overset{\_}{M}v_{i}} \right\rbrack}{\overset{.}{v}}_{i}}}}} & (57) \end{matrix}$

The cost function (52) will be used for analyzing the formation stability.

A neural network function is used as a powerful estimator to estimate the unmodeled dynamics in a nonholonomic mobile robot. Here the on-line neural network tuning algorithms are used to guarantee the vehicle's desired path tracking. The feed forward neural network 800 is shown in FIG. 8 has an input layer, a hidden layer, and an output layer. Its output is the vector y, and x is its input vector. The two layer neural network input output relation is given by the following formula:

$\begin{matrix} {y_{i} = {\sum\limits_{j = 1}^{N_{h}}\left\lbrack {{W_{ij}{\sigma \left( {{\sum\limits_{k = 1}^{n}{V_{jk}x_{k}}} + \theta_{Vj}} \right)}} + \theta_{wi}} \right\rbrack}} & (58) \end{matrix}$

where yε

^(m), xε

^(n), i=1, . . . , m, σ(•) is the activation function, N_(h) are the hidden layer neurons, V_(jk) are weights of first interconnections, W_(ij) are weights of second interconnections, and θ_(vj), θ_(wi) are Threshold offsets or ‘bias’. Common activation functions known by artisans having ordinary skill include hard limit, symmetric hard limit, linear threshold, sigmoid (logistic curve), symmetric sigmoid, hyperbolic tangent, augmented ratio of squares, and radial basis function, i.e., Gaussian with variance v. The expression of neural network output formula can be written in the vector case as:

y=W ^(T)σ(V ^(T) x)  (59)

The thresholds are included in the weight matrix as its first column.

One of the main neural network properties is the function approximation property, which is important for control purposes. If ƒ(x) is assumed to be a smooth function from

to

^(m), we can see that, when x is belongs to compact set

^(s)ε

^(n) for a number of hidden layer neurons N_(h), the weights and thresholds will be given as:

ƒ(x)=W ^(T)σ(V ^(T) x)+ε,  (60)

where W and V are the ideal weights that will give a perfect ƒ(x) approximation, where ε is a bounded value of neural network approximation error.

From equation (60) we can conclude that the neural network can give an approximation for any smooth function in a compact set. Then the estimation of ƒ(x) is given by:

{circumflex over (ƒ)}(x)=Ŵ ^(T)σ({circumflex over (V)} ^(T) x),  (61)

where Ŵ, {circumflex over (V)} is the ideal neural network weight's estimation. These weights can be estimated by applying on-line tuning algorithms. The weight tuning algorithms used in literature were the gradient algorithms, which are built based on back-propagation algorithms. These weight tuning algorithms are provided by the following equations:

{circumflex over ({dot over (W)}=Fσ(V ^(T) x)r ^(T)  (62)

{circumflex over ({dot over (V)}=Gx({circumflex over (σ)}′^(T) Ŵr)^(T)  (63)

where F and G are PD design matrices. In the case of sigmoid activation, the hidden layer gradient is:

{circumflex over (σ)}′=diag{σ{circumflex over (V)} ^(T) x}[I−diag{{circumflex over (V)} ^(T) x}].  (64)

The aim of the present method is to arrange a group of robots in a desired formation around their leader. In the ideal formation case the leader is assumed to be located in the center of the group. The formation proposed strategy is an extension of existing potential field control strategy with the difference that the model used in the present invention is a nonholonomic mobile robot instead of a holonomic point mass robot.

Assuming a fleet of n nonholonomic mobile robots with dynamics similar to those given in equations (1), the group leader coordinates are generated by running the SLAM algorithm. The group's leader is equipped with a simultaneous localization and mapping system (SLAM navigation unit).

The whole system includes two cascaded stages. The first one is the robot system which includes the system dynamics. The second stage is the potential fields formation controller. The general structure of the integrated system 10 a is shown in FIG. 1 As shown in FIG. 1, the system utilizes feedback linearization (FBL) control. feedback linearization is a method for controlling the navigation of nonholonomic mobile robots and advantageously cancels the nonlinearities of the nonholonomic vehicles. The linearized system is valid for both navigation and group formation. Utilizing equations (15) and (16), The i^(th) robot system should satisfy the following assumptions; (1) Boundedness: M _(i)(q), the norm of V _(m) _(i) (q,{dot over (q)}), and τ _(d) are bounded; (2) Skew Symmetric: The matrix M _(i)(q)−2 V _(m) _(i) (q,{dot over (q)}) is skew symmetric such that, x^(T) ( M _(i)(q)−2 V _(m) _(i) (q,{dot over (q)})) x=0. In the case that the surface friction F(v)=0 and unknown disturbance τ _(d)=0, then:

{dot over (v)}= M ⁻¹(− V _(m)(q,{dot over (q)})v+ B τ),  (65)

{dot over (v)}=− M ⁻¹ V _(m)(q,{dot over (q)})v+ M ⁻¹ Bτ.  (66)

Then, for feedback linearization, choose the input of the robot τ to be:

τ=( M ⁻¹ B )⁻¹(u _(i) + M ⁻¹ V _(m)(q,{dot over (q)})v),  (67)

where u_(i) is the vehicle frame proposed control signal that controls the whole system behavior, then by substituting equation (67) into equation (66) the robot system will be linearized to:

{dot over (v)}=u _(i)  (68)

This means that the linear and the angular velocity of the robot can be controlled directly by the proposed control signal u_(i), but all {dot over (v)} dynamics in equation (68) is in the robot body frame representation, and the proposed control signal ū_(i) is in general inertia frame. Now, we need to design a transformation filter to transform the control signal ū_(i) to become more appropriate for controlling the robot body frame dynamics. We will start from the inertia frame coordinates. Therefore, we assume that:

Λ{umlaut over (q)}=ū  (69)

Because we are interested in x and y only, we define:

$\Lambda = {\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}.}$

For coordinates transformation, this yields:

{dot over (q)}=Sv  (70)

The linearized robot system is {dot over (v)}=u₁. Differentiating equation (70) and substituting it for {umlaut over (q)} yields:

Λ{umlaut over (q)}+Λ({dot over (S)}v+{dot over (v)}S)  (71)

From equations (69 and (71), ū will be given as:

u =Λ({dot over (S)}v+{dot over (v)}S)  (72)

u _(i)=(ΛS)⁻¹(ū−Λ{dot over (S)}v)  (73)

We assume that each robot has a sensing range equal to S_(r) as shown in range plot 900 of FIG. 9, and each robot can know its neighbors' positions which are located inside its sensing area. All nonholonomic robots in the fleet need to navigate in a desired polygon shape. These robots localize themselves as followers around a moving leader. The distance between each two neighboring followers should be equal to L≦S_(r). The radius of the circumcircle of the desired polygon is equal to

. The coordinates of the moving leader is x_(c)ε

² which can be generated by SLAM approach on the group leader. From the basics of the geometry,

will be:

$\begin{matrix} {r = \frac{L}{2\; {\sin \left( {\pi \text{/}n} \right)}}} & (74) \end{matrix}$

The control law will be implemented based on the attractive and repulsive potentials as well as the vehicle damping action. The desired behavior of the system will be obtained by using this control law:

u _(i) =P _(ce) +P _(ij) +Da,  (75)

where P_(ce) is the center potential, P_(ij) is the interagent potential (agent's potential), and Da is the damping action.

A nonholonomic robot model, such as a car-like robot, is used in the present method. The complete attractive and repulsive potential field analysis for such a system is developed. The potential analysis includes (x, y, θ) where (x, y) are the coordinates of the robot's center of mass in the inertial Cartesian frame (X, Y), and θ is the orientation of the robot with respect to the inertial frame, see FIG. 3. In the case of a nonholonomic mobile robot, if the interest is (x, y, θ), the center potential is:

$\begin{matrix} {{P_{att} = {- {\nabla_{P_{i}}{V_{c_{i}}\left( P_{i} \right)}}}},} & (76) \\ {{V_{c_{i}} = {\frac{1}{2}{K_{c}\left( {R_{c_{i}} - r} \right)}^{2}}},{{{where}\mspace{14mu} {R_{ci}(t)}} = {{{P_{i}(t)} - P_{c}}}},{{P_{i}(t)} = \begin{bmatrix} {x_{i}(t)} \\ {y_{i}(t)} \\ {\theta_{i}(t)} \end{bmatrix}},{P_{c} = \begin{bmatrix} x_{c} \\ y_{c} \\ \theta_{c} \end{bmatrix}},{and}} & (77) \\ {{\left. \Rightarrow{R_{ci}(t)} \right. = {\sqrt{\left( {{x_{i}(t)} - x_{c}} \right)^{2} + \left( {{y_{i}(t)} - y_{c}} \right)^{2} + \left( {{\theta_{i}(t)} - \theta_{c}} \right)^{2}}.{Thus}}},} & (78) \\ {P_{att} = {{{- {\nabla_{pi}{V_{ci}\left( P_{i} \right)}}} - \frac{\partial V_{ci}}{\partial P_{i}}} = {- \left( {\frac{\partial V_{ci}}{\partial R_{ci}} \cdot \frac{\partial R_{ci}}{\partial P_{i}}} \right)}}} & (79) \end{matrix}$

Differentiating equation (77) for R_(ci) yields:

$\begin{matrix} {\frac{\partial V_{c_{i}}}{\partial R_{c_{i}}} = {{K_{c}\left( {R_{c_{i}} - r} \right)}.}} & (80) \end{matrix}$

Thus, if:

D=(x _(i)(t)−x _(c))²+(y _(i)(t)−y _(c))²+(θ_(i)(t)−θ_(c))²,  (81)

and

R _(c) _(i) =D ^(1/2).  (82)

Now differentiate R_(c) _(i) with respect to P_(i) and use the chain rule, the result will be:

$\begin{matrix} {\frac{\partial R_{ci}}{\partial P_{i}} = {\frac{\partial R_{ci}}{\partial D}{\frac{\partial D}{\partial P_{i}}.}}} & (83) \end{matrix}$

From equation (82), we obtain:

$\begin{matrix} {\mspace{79mu} {{\frac{\partial R_{ci}}{\partial D} = {\frac{1}{2}D^{- \frac{1}{2}}}},\mspace{79mu} {and}}} & (84) \\ {\frac{\partial D}{\partial P_{i}} = {\left\lbrack {\frac{\partial D}{\partial x_{i}}\mspace{14mu} \frac{\partial D}{\partial y_{i}}\mspace{14mu} \frac{\partial D}{\partial\theta_{i}}} \right\rbrack = {\quad{{\left\lbrack {2\left( {{x_{i}(t)} - x_{c}} \right)\mspace{14mu} 2\left( {{y_{i}(t)} - y_{c}} \right)\mspace{14mu} 2\left( {{\theta_{i}(t)} - \theta_{c}} \right)} \right\rbrack = {2\left\lbrack \left( {{P_{i}(t)} - P_{c}} \right) \right\rbrack}^{T}},}}}} & (85) \end{matrix}$

Substituting equations (84) and (85) in (83) results in:

$\begin{matrix} {\frac{\partial R_{ci}}{\partial P_{i}} = {{\frac{1}{R_{ci}}\left\lbrack \left( {{P_{i}(t)} - P_{c}} \right) \right\rbrack}^{T}.}} & (86) \end{matrix}$

The interagent potential between each two neighboring followers can be expressed as:

P _(ij)=−∇_(P) _(i) V _(ij)(P _(i) ,P _(j)),  (87)

where

$\begin{matrix} {{{{R_{f_{i}}(t)} = {{{P_{i}(t)} - {P_{j}(t)}}}},{{P_{i}(t)} = \begin{bmatrix} {x_{i}(t)} \\ {y_{i}(t)} \\ {\theta_{i}(t)} \end{bmatrix}},{P_{j} = \begin{bmatrix} {x_{j}(t)} \\ {y_{j}(t)} \\ {\theta_{j}(t)} \end{bmatrix}}}{{V_{ij}\left( {P_{i},P_{j}} \right)} = \left\{ \begin{matrix} {{\frac{1}{2}{K_{a}\left( {R_{f_{i}} - L} \right)}^{2}},} & {R_{f_{i}} < L} \\ {0,} & {Otherwise} \end{matrix} \right.}} & (88) \end{matrix}$

where R_(ƒ) _(i) is the current distance between each two neighboring agents, K_(a) is a positive constant, and V_(ij) is continuously differentiable. If R_(ƒ) _(i) <L this potential produces a repulsive force, and it will produce a null force if R_(ƒ) _(i) ≧L. Suppose that:

$\begin{matrix} {{R_{f_{i}} = \sqrt{\left\lbrack {{P_{i}(t)} - {P_{j}(t)}} \right\rbrack^{T}\left\lbrack {{P_{i}(t)} - {P_{j}(t)}} \right\rbrack}},{R_{f_{i}} = \sqrt{\left\lbrack {{P_{j}(t)} - {P_{i}(t)}} \right\rbrack^{T}\left\lbrack {{P_{j}(t)} - {P_{i}(t)}} \right\rbrack}},} & (89) \\ {{D_{f_{i}} = {\left\lbrack {{P_{i}(t)} - {P_{j}(t)}} \right\rbrack^{T}\left\lbrack {{P_{i}(t)} - {P_{j}(t)}} \right\rbrack}},} & (90) \\ {\left. {= {\left( {{x_{i}(t)} - {x_{j}(t)}} \right)^{2} + \left( {{y_{i}(t)} - {y_{j}(t)}} \right)^{2} + \left( {{\theta_{i}(t)} - {\theta_{j}(t)}} \right)^{2}}} \right).} & (91) \end{matrix}$

Whereas, the interagent potential between any two neighboring mobile robots is the force obtained by adding together the repulsive forces of all of them, for such an operation differentiating D_(ƒ) _(i) , with respect to P_(i), and P_(j) is required.

$\begin{matrix} {{\frac{\partial D_{f_{i}}}{\partial P_{i}} = \left\lbrack {\frac{\partial D_{f_{i}}}{\partial x_{i}}\mspace{14mu} \frac{\partial D_{f_{i}}}{\partial y_{i}}\mspace{14mu} \frac{\partial D_{f_{i}}}{\partial\theta_{i}}} \right\rbrack},} & (92) \\ {{\frac{\partial D_{f_{i}}}{\partial P_{i}} = {2\left\lbrack {\left( {{x_{i}(t)} - {x_{j}(t)}} \right) + \left( {{y_{i}(t)} - {y_{j}(t)}} \right) + \left( {{\theta_{i}(t)} - {\theta_{j}(t)}} \right)} \right\rbrack}},{and}} & (93) \\ {\frac{\partial D_{f_{i}}}{\partial P_{j}} = {{2\left\lbrack {\left( {{x_{j}(t)} - {x_{i}(t)}} \right) + \left( {{y_{j}(t)} - {y_{i}(t)}} \right) + \left( {{\theta_{j}(t)} - {\theta_{i}(t)}} \right)} \right\rbrack}.}} & (94) \end{matrix}$

Taking the derivative of R_(ƒ) _(i) , with respect to P_(i) and P_(j), then use the chain rule and insert D_(ƒ) _(i) so that:

$\begin{matrix} {{\frac{\partial R_{f_{i}}}{\partial\left( P_{i} \right)} = \left( {\frac{\partial R_{f_{i}}}{\partial D_{f_{i}}}\frac{\partial D_{f_{i}}}{\partial P_{i}}} \right)},} & (95) \\ {{\frac{\partial R_{f_{i}}}{\partial D_{f_{i}}} = {\frac{1}{2}D_{f_{i}^{{- 1}/2}}}},} & (96) \\ {{\frac{\partial R_{f_{i}}}{\partial\left( P_{j} \right)} = \left( {\frac{\partial R_{f_{i}}}{\partial D_{f_{j}}} \cdot \frac{\partial D_{f_{j}}}{\partial P_{j}}} \right)},} & (97) \\ {\frac{\partial R_{f_{i}}}{\partial D_{f_{j}}} = {\frac{1}{2}{D_{f_{j}}^{{- 1}/2}.}}} & (98) \end{matrix}$

Using equations (96), (93) in (95) gives:

$\begin{matrix} {\frac{\partial R_{f_{i}}}{\partial\left( P_{i} \right)} = {\frac{1}{2}D_{f_{i}}^{{- 1}/2}{2\left\lbrack {\left( {{x_{i}(t)} - {x_{j}(t)}} \right)\mspace{14mu} \left( {{y_{i}(t)} - {y_{j}(t)}} \right)\mspace{14mu} \left( {{\theta_{i}(t)} - {\theta_{j}(t)}} \right)} \right\rbrack}}} & (99) \\ {{= {\frac{1}{2}{D_{f_{i}}^{{- 1}/2}\left\lbrack \left( {{P_{i}(t)} - {P_{j}(t)}} \right)^{T} \right\rbrack}}},} & (100) \end{matrix}$

and using equations (98), (94) in (97), gives:

$\begin{matrix} {\frac{\partial R_{f_{i}}}{\partial\left( P_{j} \right)} = {\frac{1}{2}D_{f_{j}}^{{- 1}/2}{2\left\lbrack {\left( {{x_{j}(t)} - {x_{i}(t)}} \right) + \left( {{y_{j}(t)} - {y_{i}(t)}} \right) + \left( {{\theta_{j}(t)} - {\theta_{i}(t)}} \right)} \right\rbrack}}} & (101) \\ {\mspace{79mu} {= {\frac{1}{2}\left( D_{f_{j}} \right)^{- \frac{1}{2}}{{2\left\lbrack \left( {{P_{j}(t)} - {P_{i}(t)}} \right)^{T} \right\rbrack}.}}}} & (102) \end{matrix}$

The sum of equations (100) and (102) gives:

$\frac{\partial R_{f_{i}}}{\partial\left( {P_{i},P_{j}} \right)} = {\left( D_{f_{i}} \right)^{{- 1}/2}{\begin{pmatrix} {\left\lbrack {\left( {{x_{i}(t)} - {x_{j}(t)}} \right)\mspace{14mu} \left( {{y_{i}(t)} - {y_{j}(t)}} \right)\mspace{14mu} \left( {{\theta_{i}(t)} - {\theta_{j}(t)}} \right)} \right\rbrack +} \\ {\left( D_{f_{j}} \right)^{{- 1}/2}\left\lbrack {\left( {{x_{j}(t)} - {x_{i}(t)}} \right)\mspace{14mu} \left( {{y_{j}(t)} - {y_{i}(t)}} \right)\mspace{14mu} \left( {{\theta_{j}(t)} - {\theta_{i}(t)}} \right)} \right\rbrack} \end{pmatrix}.}}$

Hence:

$\begin{matrix} {\frac{\partial R_{f_{i}}}{\partial\left( {P_{i},P_{j}} \right)} = {\left\lbrack {{\left( D_{f_{i}} \right)^{{- 1}/2}\left( {{P_{i}(t)} - {P_{j}(t)}} \right)^{T}} + {\left( D_{f_{j}} \right)^{{- 1}/2}\left( {{P_{j}(t)} - {P_{i}(t)}} \right)^{T}}} \right\rbrack.}} & (103) \end{matrix}$

On the other hand, from equation (88), the derivative of V_(ij) with respect to d_(ij) is:

$\begin{matrix} {{\frac{\partial V_{ij}}{\partial\left( d_{ij} \right)} = {K_{a}\left( {R_{f_{i}} - L} \right)}},{{{when}\mspace{14mu} R_{f_{i}}} < L},} & (104) \end{matrix}$

and using the chain rule to differentiate V_(ij) with respect to P_(i),P_(j):

$\begin{matrix} {\frac{\partial V_{ij}}{\partial\left( {P_{i},P_{j}} \right)} = {\frac{\partial V_{ij}}{\partial R_{f_{i}}}{\frac{\partial R_{f_{i}}}{\partial\left( {P_{i},P_{j}} \right)}.}}} & (105) \end{matrix}$

Substituting equations (103), (104) into equation (105) then leads to:

$\begin{matrix} \begin{matrix} {\frac{\partial V_{ij}}{\partial\left( {P_{i},P_{j}} \right)} = {{K_{a}\left( {R_{f_{i}} - L} \right)}\begin{bmatrix} {{\left( D_{f_{i}} \right)^{- \frac{1}{2}}\left( {{P_{i}(t)} - {P_{j}(t)}} \right)^{T}} +} \\ {\left( D_{f_{j}} \right)^{- \frac{1}{2}}\left( {{P_{j}(t)} - {P_{i}(t)}} \right)^{T}} \end{bmatrix}}} \\ {= {{{K_{a}\left( {R_{f_{i}} - L} \right)}\begin{bmatrix} {{\left( \frac{1}{R_{f_{i}}} \right)\left( {{P_{i}(t)} - {P_{j}(t)}} \right)^{T}} +} \\ {\left( \frac{1}{R_{f_{i}}} \right)\left( {{P_{j}(t)} - {P_{i}(t)}} \right)^{T}} \end{bmatrix}}.}} \end{matrix} & (106) \end{matrix}$

According to equation (89), we obtain:

R _(ƒ) _(i) =−R _(ƒ) _(j) .  (107)

Substituting equation (107) into equation (106) gives:

$\begin{matrix} {\frac{\partial V_{ij}}{\partial\left( {P_{i},P_{j}} \right)} = {{{K_{a}\left( {R_{f_{i}} - L} \right)}\left\lbrack {{\left( \frac{1}{R_{f_{i}}} \right)\left( {{P_{i}(t)} - {P_{j}(t)}} \right)^{T}} - {\left( \frac{1}{R_{f_{i}}} \right)\left( {{P_{j}(t)} - {P_{i}(t)}} \right)^{T}}} \right\rbrack}.}} & (108) \end{matrix}$

The interagent potential is given by:

$\begin{matrix} {{\therefore P_{ij}} = {{- {K_{a}\left( {R_{f_{i}} - L} \right)}}{{\frac{1}{R_{f_{i}}}\left\lbrack {\left( {{P_{i}(t)} - {P_{j}(t)}} \right)^{T} - \left( {{P_{j}(t)} - {P_{i}(t)}} \right)^{T}} \right\rbrack}.}}} & (109) \end{matrix}$

To get the desired formation, consider the stable configuration to be a regular polygonal shape. Choose the total energy of the closed loop system as a Lyapunov candidate function ‘{tilde over (V)}’ so that:

$\begin{matrix} {{\overset{\sim}{V} = {\sum\limits_{i = 1}^{n}\left\lbrack {{V_{c_{i}}\left( P_{i} \right)} + {\sum\limits_{{j = 1};{j \neq i}}^{n}{V_{ij}\left( {P_{i},P_{j}} \right)}} + {\frac{1}{2}v_{i}^{T}\overset{\_}{M}\; v_{i}}} \right\rbrack}},} & (110) \\ {{\overset{\sim}{V} = {\sum\limits_{i = 1}^{n}\left\lbrack {{Pot}_{i} + {Kin}_{i}} \right\rbrack}},} & (111) \\ {{{Pot}_{i} = {{V_{c_{i}}\left( P_{i} \right)} + {\sum\limits_{{j = 1};{j \neq i}}^{n}{V_{ij}\left( {P_{i},P_{j}} \right)}}}},} & (112) \\ {{Kin}_{i} = {\sum\limits_{i = 1}^{n}{\frac{1}{2}v_{i}^{T}\overset{\_}{M}\; {v_{i}.}}}} & (113) \end{matrix}$

For the desired shape formation, the system will be stable if and only if {tilde over (V)}(P_(i))≧0, and the time derivative of a Lyapunov candidate function ‘{tilde over ({dot over (V)}≦0’:

$\begin{matrix} {\mspace{79mu} {{{\overset{.}{\overset{\sim}{V}}\left( P_{i} \right)} = {\sum\limits_{i = 1}^{n}\left\{ {{\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack {\overset{.}{P}}_{i}} + {\left\lbrack {Kin}_{i} \right\rbrack {\overset{.}{v}}_{i}}} \right\}}},}} & (114) \\ {{\overset{.}{\overset{\sim}{V}}\left( P_{i} \right)} = {{\sum\limits_{i = 1}^{n}{\left\lbrack {{\nabla_{p_{i}}{V_{c_{i}}\left( P_{i} \right)}} + {\overset{n}{\sum\limits_{{j = 1};{j \neq i}}}{\nabla_{P_{i}}{V_{ij}\left( {P_{i},P_{j}} \right)}}}} \right\rbrack {\overset{.}{P}}_{i}}} + {\sum\limits_{= 1}^{n}{{\frac{\partial}{\partial V_{i}}\left\lbrack {\frac{1}{2}v_{i}^{T}\overset{\_}{M}\; v_{i}} \right\rbrack}{{\overset{.}{v}}_{i}.}}}}} & (115) \end{matrix}$

Thus, we obtain:

$\begin{matrix} {{{\frac{\partial}{\partial V_{i}}\left\lbrack {\frac{1}{2}v_{i}^{T}\overset{\_}{M}\; v_{i}} \right\rbrack}{\overset{.}{v}}_{i}} = {v_{i}^{T}\overset{\_}{M}\; {{\overset{.}{v}}_{i}.}}} & (116) \end{matrix}$

From (70) obtain {dot over (q)}=Sv_(i). Also it is known that:

{dot over (P)} _(i) ={dot over (q)}=S _(v) _(i) ,  (117)

{dot over (v)} _(i) =u _(i).  (118)

Substitute equation (118) into equation (116) to obtain:

$\begin{matrix} {{{\frac{\partial}{\partial V}\left\lbrack {\frac{1}{2}v_{i}^{T}\overset{\_}{M}\; v_{i}} \right\rbrack}{\overset{.}{v}}_{i}} = {v_{i}^{T}\overset{\_}{M}\; {u_{i}.}}} & (119) \end{matrix}$

Now substitute equation (117) and equation (119) into equation (115).

$\begin{matrix} {\overset{.}{\overset{\sim}{V}} = {{\sum\limits_{i = 1}^{n}{\left\lbrack {{\nabla_{P_{i}}{V_{c_{i}}\left( P_{i} \right)}} + {\overset{n}{\sum\limits_{{j = 1};{j \neq i}}}{\nabla_{P_{i}}{V_{ij}\left( {P_{i},P_{j}} \right)}}}} \right\rbrack {Sv}_{i}}} + {\sum\limits_{= 1}^{n}{v_{i}^{T}\overset{\_}{M}\; {u_{i}.}}}}} & (120) \end{matrix}$

For simplicity, use ∇_(p) _(i) Pot_(i) instead of [∇_(P) _(i) V_(c) _(i) (P_(i))+Σ_(j=1;j≠i) ^(n)∇_(P) _(i) V_(ij)(P_(i),P_(j))], so that equation (120) becomes:

$\begin{matrix} {{\overset{.}{\overset{\sim}{V}} = {{\sum\limits_{i = 1}^{n}{\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack S\; v_{i}}} + {\sum\limits_{= 1}^{n}\left( {v_{i}^{T}\overset{\_}{M}\; u_{i}} \right)}}},} & (121) \\ {\left. \Rightarrow\overset{.}{\overset{\sim}{V}} \right. = {{\sum\limits_{i = 1}^{n}\left( {v_{i}^{T}{S^{T}\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack}^{T}} \right)} + {\sum\limits_{i = 1}^{n}{\left( {\sum\limits_{= 1}^{n}{v_{i}^{T}\overset{\_}{M}\; u_{i}}} \right).}}}} & (122) \end{matrix}$

For the desired configuration the system must be stable. For that choose the control u_(i) as:

u _(i) = M ⁻¹ [−S ^(T)[∇_(p) _(i) Pot _(i)]^(T) −K _(V) v _(i)].  (123)

Substitute equation (123) into equation (122) and compute {tilde over ({dot over (V)} to get:

$\begin{matrix} {{\overset{.}{\overset{\sim}{V}} = {\left. {{\sum\limits_{i = 1}^{n}\left( {v_{i}^{T}{S^{T}\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack}^{T}} \right)} + {\sum\limits_{i = 1}^{n}\left( {v_{i}^{T}\overset{\_}{M}\; \left( {{\overset{\_}{M}}^{- 1}\left\lbrack {{- {S^{T}\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack}^{T}} - {K_{V}v_{i}}} \right\rbrack} \right)} \right)}}\Rightarrow\overset{.}{\overset{\sim}{V}} \right. = {\left. {{\sum\limits_{i = 1}^{n}\left( {v_{i}^{T}{S^{T}\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack}^{T}} \right)} + {\sum\limits_{i = 1}^{n}\left( {v_{i}^{T}\; \left( \left\lbrack {{- {S^{T}\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack}^{T}} - {K_{V}v_{i}}} \right\rbrack \right)} \right)}}\Rightarrow\overset{.}{\overset{\sim}{V}} \right. = {{\sum\limits_{i = 1}^{n}\left( {v_{i}^{T}{S^{T}\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack}^{T}} \right)} - {\sum\limits_{i = 1}^{n}\left( {v_{i}^{T}\; {S^{T}\left\lbrack {\nabla_{p_{i}}{Pot}_{i}} \right\rbrack}^{T}} \right)} - {\sum\limits_{i = 1}^{n}{v_{i}^{T}K_{V}\; v_{i}}}}}}},} & (124) \end{matrix}$

whereby:

$\begin{matrix} {{\left. \Rightarrow\overset{.}{\overset{\sim}{V}} \right. = {{- {\sum\limits_{i = 1}^{n}{v_{i}^{T}K_{V}\; v_{i}}}} \leq 0}},} & (125) \end{matrix}$

which proves stability. The performance of FBL controller 10 a is shown as plot 1000 of FIG. 10.

In practice, the robot dynamics or parameters in many applications may be unknown or changing with time. In such cases the aforementioned controller is modified to controller configuration 10 b, as shown in FIG. 2. In controller 10 b, on-line neural network (NN) weight tuning algorithms guarantee tracking a desired following path and error dynamics. The follower will localize itself on its desired trajectory based on the potential fields effect.

For unknown robot dynamics the present method utilizes a framework combination of two stages. The first combination comprises potential field 12 and repulsive potential field 14 utilizing a combiner 16 in an outer loop to provide a formation controller for robot 18. The second combination comprises the NN 800 in an inner loop to provide a controller for robot 18 which guarantees tracking the desired path and modeling the dynamics of robot 18. The robot has to follow its desired trajectory q_(d). The tracking error E(t) is the difference between the desired path trajectory q_(d) and the estimated trajectory q, as follows:

E(t)=q _(d)(t)−q(t),  (126)

where:

$\begin{matrix} {{q_{d} = {{\begin{bmatrix} x_{f} \\ y_{f} \end{bmatrix}\mspace{14mu} {and}\mspace{14mu} q} = \begin{bmatrix} x \\ y \end{bmatrix}}},} & (127) \end{matrix}$

and the filtered tracking error is given by:

r(t)=ė−

e,  (128)

where

>0: is a PD design parameter matrix. By using equation (1) and differentiating equation (128), the dynamics of the robot can be written in terms of filtered error as:

M{dot over (r)}=−V _(m) r−τ+ƒ+τ _(d),  (129)

where ƒ is the nonlinear robot function, which is equal to:

ƒ(x)=M(q)({umlaut over (q)} _(d) −

ė)+V _(m)(q,{dot over (q)})({dot over (q)} _(d) +δe)+G(q)+F({dot over (q)}).  (130)

To compute ƒ(x), we define the vector x:

x[e ^(T) ė ^(T) q _(d) ^(T) {dot over (q)} _(d) ^(T) {umlaut over (q)} _(d) ^(T)]^(T)  (131)

where x can be measured. The appropriate controller can be used for the path following is derived by setting:

τ={circumflex over (ƒ)}(x)+K _(c) r,  (132)

where K_(c)=K_(c) ^(T) is the gain matrix, and K_(c)r is the outer PD tracking loop, and {circumflex over (ƒ)}(x) is the estimate of ƒ(x). Using the controller characterized by equation (132), the closed loop error dynamics is given by:

M{dot over (r)}=−(K _(c) +V _(m))r+ ƒ+τ _(d).  (133)

The functional estimated error {tilde over (ƒ)} is:

ƒ=ƒ−{circumflex over (ƒ)}.  (134)

The controller characterized by equation (132) will minimize the tracking error based on selecting an appropriate gain value for K_(c), and estimating {tilde over (ƒ)}. The error r(t) and the control signals should be bounded. As shown in FIG. 2, controller 10 b uses PD control in the outer tracking loop and neural network (NN) 800 forming control in the inner loop to estimate the robot function ƒ(x). The NN controller structure is selected as:

τ={circumflex over (W)}σ( V ^(T) x)+K _(c) r.  (135)

Tuning weights of NN 800 can be selected by using equation (133) and selecting K_(c) which can stabilize the filtered tracking error r(t). For the whole system to be stable the outer formation loop must be slower than the inner robot stabilization loop. The performance of controller 10 b using NN 800 for nonlinear inner loop control is shown as plot 1100 of FIG. 11.

It is to be understood that the present invention is not limited to the embodiments described above, but encompasses any and all embodiments within the scope of the following claims. 

We claim:
 1. A robotic leader-follower navigation and fleet management control method, comprising the steps of: using at least one sensor to assist in performing Simultaneous Localization and Mapping (SLAM) in a group leader of a nonholonomic group of autonomous robots; and executing potential field formation control in follower members of the nonholonomic group of autonomous robots; wherein the group leader creates a map of landmarks in an environment and localizes itself based on the map to thereby navigate the environment, the follower members following the group leader in a predefined formation pattern based on the potential field with respect to each other and with respect to the group leader.
 2. The robotic leader-follower navigation and fleet management control method according to claim 1, wherein the of claim 1 are performed when dynamics of the autonomous robots are known.
 3. The robotic leader-follower navigation and fleet management control method according to claim 1, further comprising the step of computing a desired formation of the autonomous robots by utilizing a control law characterized by the relations: $u_{i} = {f_{ci} + {\sum\limits_{{j = 1},{j \neq i}}^{n}f_{aij}} - {b{\overset{.}{x}}_{i}}}$ and f_(ci) = −∇_(x_(i))V_(ci)(x_(i)), where ƒ_(ci) is the force between the center (leader) and follower i, and is used to keep each autonomous robot at a radius of a circle circumscribing a polygon at a distance

from the center of the formation.
 4. The robotic leader-follower navigation and fleet management control method according to claim 3, further comprising the step of utilizing an outer control loop and an inner control loop to execute the field formation control.
 5. The robotic leader-follower navigation and fleet management control method according to claim 4, further comprising the steps of: forming a center potential field as a component of the outer control loop; forming a repulsive potential field as a component of the outer control loop; summing the center potential and the repulsive potential to provide a net vehicle frame control signal ū_(i) in the outer control loop; performing a coordinate transformation based on ū_(i); forming a sum comprising an output of the coordinate transformation plus a feedback gain of the inner control loop; performing feedback linearization control in the inner control loop based on the sum of the coordinate transformation and the inner control loop feedback gain, and based on a velocity v of the autonomous robot, output of the feedback linearization being fed as an inner loop control signal to the autonomous robot; closing the outer control loop with a signal S(q) fed back to be used as input to the center potential forming step and as input to the repulsive potential forming step, S(q) being based on the v output of the autonomous robot and a rate of change {dot over (q)} of a vector q having 2-D coordinate components x and y and a wheel angle component θ, where S(q)=(v(t))/{dot over (q)}.
 6. The robotic leader-follower navigation and fleet management control method according to claim 5, wherein the steps of claim 5 are performed for each of the follower members.
 7. The robotic leader-follower navigation and fleet management control method according to claim 4, further comprising the steps of: forming a center potential field as a component of the outer control loop; forming a repulsive potential field as a component of the outer control loop; summing the center potential and the repulsive potential to provide a desired trajectory control signal q_(d) in the outer control loop; forming a tracking error based on summing the desired trajectory control signal q_(d) and an inner loop tracking estimation q; filtering the tracking error; applying an inner loop gain constant K_(c) to the filtered tracking error to provide a gain-adjusted, filtered tracking error; estimating nonlinear dynamics of the autonomous robot in the inner control loop based on motion output of the autonomous robot, the desired trajectory q_(d) and the second derivative {umlaut over (q)}_(d) of the desired trajectory, the nonlinear dynamics estimate forming a function ƒ(x) of the robot summed with the gain-adjusted filtered tracking error to complete the inner control loop, the outer loop being completed by feeding the motion output of the autonomous robot back as input to the center potential forming step and as input to the repulsive potential forming step.
 8. The robotic leader-follower navigation and fleet management control method according to claim 7, wherein the steps of claim 6 are performed for each of the follower members.
 9. The robotic leader-follower navigation and fleet management control method according to claim 7, wherein the nonlinear dynamics estimate in the inner control loop is performed by a neural network. 